<?php
/**
 * 框架类
 **/
class xmf{

	/**
	 * 程序入口
	 **/
	public static function run(){
	
		self::_loadFile();
		if(SYS_DEBUG){	//错误处理
			error_reporting(-1);
		}else{
			error_reporting(0);
			set_error_handler(array(new error(),'handler'));
		}
		spl_autoload_register(array(__CLASS__,'xmfAutoload')); //注册自动载入类
		self::_urlRoute();
	}

	/**
	 * 加载初始文件
	 **/
	private static function _loadFile(){

		require_once 'constant.php';		//系统常量
		require_once 'base.func.php';		//公共函数
	}

	/**
	 * url路由
	 */
	private static function _urlRoute(){
		$parts = explode('/',trim(G('r'),'/'));
		empty($parts[0]) && $parts[0] = 'index';
		empty($parts[1]) && $parts[1] = 'index';
		$m = array_pop($parts);
		$c = 'C_'.implode($parts,'_');
		if(!class_exists($c)){
			error::quit(lang::get('sys/core/nocontroller'));
		}
		$Controller = new $c;
		if(!method_exists($Controller,$m)){
			error::quit(lang::get('sys/core/nomethod'));
		}
		$Controller->$m();
	}
	
	/**
	 * 自动载入
	 */
	public static function xmfAutoload($className){

		$parts = explode('_',$className);
	
		$action = strtoupper(array_shift($parts));
		switch($action){
		
			case 'M':
				$dir	=	MODEL_DIR;
				break;
			case 'C':
				$dir	=	CONTROLLER_DIR;
				break;
			case 'T':
				$dir	=	APP_DIR.'tool/';
				break;
			default:
				$dir	=	APP_DIR.'core/';
				array_unshift($parts,$action);
				break;
		}
	
		$fileName	=	array_pop($parts).'.class.php';
	
		$dir .= strtolower(implode($parts,'/').'/'.$fileName);
	
		if(file_exists($dir)){
			require_once $dir;
		}else{
			$lib	=	require_once('lib.config.php');
			if(isset($lib[$className])){
				require_once $lib[$className];	return; //加载lib库类
			}
		}
	}
}
?>